package com.dc.designPattern._18_memento.extend.extend3;

/**
 * Description: 备忘录模式扩展_避免备忘录对象数据篡改
 *
 *  使用私有内部类来实现，使其备忘录的访问权限，限制在原始对象中
 *
 * @author: gdc
 * @date: 2021/7/8
 * @version 1.0
 */
public class Client {

    public static void main(String[] args){
        // 原始对象
        Originator originator = new Originator("心情好好...");
        System.out.println("初始的状态为：" + originator.getState());

        // 创建备忘录对象
        IMemento memento = originator.createMemento();

        // 创建备忘录管理对象，并保存备忘录对象
        Caretaker caretaker = new Caretaker();
        caretaker.setMemento(memento);

        // -----------------------------------------------------------

        originator.setState("略烦躁....");
        System.out.println("后来的状态为：" + originator.getState());

        // -----------------------------------------------------------

        originator.restoreMemento(caretaker.getMemento());
        System.out.println("恢复的状态为：" + originator.getState());
    }
}
